<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="zh" xml:lang="zh" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Concept: 分析机制</title>
<meta name="uma.type" content="Concept">
<meta name="uma.name" content="analysis_mechanisms">
<meta name="uma.presentationName" content="分析机制">
<meta name="element_type" content="concept">
<meta name="filetype" content="description">
<meta name="role" content="">
<link rel="StyleSheet" href="./../../../css/default.css" type="text/css">
<script src="./../../../scripts/ContentPageResource.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSubSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageToolbar.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/contentPage.js" type="text/javascript" language="JavaScript"></script><script type="text/javascript" language="JavaScript">
					var backPath = './../../../';
					var imgPath = './../../../images/';
					var nodeInfo=null;
					contentPage.preload(imgPath, backPath, nodeInfo,  '', false, false, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top"><a name="Top"></a>
<div id="page-guid" value="9.76539014099254E-305"></div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="pageTitle" nowrap="true">Concept: 分析机制</td><td width="100%">
<div align="right" id="contentPageToolbar"></div>
</td><td width="100%" class="expandCollapseLink" align="right"><a name="mainIndex" href="./../../../index.htm"></a><script language="JavaScript" type="text/javascript" src="./../../../scripts/treebrowser.js"></script></td>
</tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="pageTitleSeparator"><img src="./../../../images/shim.gif" alt="" title="" height="1"></td>
</tr>
</table>
<div class="overview">
<table width="97%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50"><img src="./../../../images/concept.gif" alt="" title=""></td><td>
<table class="overviewTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">分析机制代表一种模式，该模式构成对常见问题的常见解决方案。 分析机制可以显示结构模式和／或行为模式。</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Relationships</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Related Elements</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../rup/workproducts/rup_analysis_model_76C3B70C.html" guid="{98EA224C-36F6-46E6-AB36-2999382B58B3}">分析模型</a>
</li>
<li>
<a href="./../../../rup/domains/analysis_and_design_BD3BBB1D.html" guid="_kjFBYN7HEdm8G6yT7-Wdqw">分析与设计</a>
</li>
<li>
<a href="./../../../rup/tasks/architectural_analysis_2B9BE03.html" guid="{8CB48402-D4C5-4E17-BB33-507315CB1BBF}">架构分析</a>
</li>
<li>
<a href="./../../../rup/tasks/identify_design_mechanisms_9A197FBC.html" guid="{C7A26BD7-3820-48D9-830F-684C3AF155F9}">确定设计机制</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Main Description</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td class="sectionTableSingleCell"><a id="Top" name="Top"></a> 
<h3>
    分析机制<a id="Introduction" name="Introduction">简介</a>
</h3>
<p>
    分析机制代表一种模式，该模式构成对常见问题的常见解决方案。
    分析机制可以显示结构模式和／或行为模式。它们在分析期间使用，通过向设计人员提供对复杂行为的简单表示，来降低分析复杂性和提高一致性。机制允许分析工作集中于将功能需求转换成软件概念，同时不会陷入相对复杂的行为的规约中，上述行为是支持功能所需要的，但不是它的中心。
    分析机制通常源于对一个或多个<b><a class="elementLinkWithUserText" href="./../../../rup/guidances/termdefinitions/architectural_pattern_E2E8EB79.html" guid="_x7JZRtnmEdmO6L4XMImrsA">架构</a></b>或<b><a class="elementLinkWithUserText" href="./../../../rup/guidances/termdefinitions/analysis_pattern_86D515F0.html" guid="_x613Q9nmEdmO6L4XMImrsA">分析模式</a>的实例化。</b>&nbsp;
</p>
<p>
    分析机制主要用来代表架构中间和靠下的层中的复杂技术的“占位符”。 通过将机制用作架构中的“占位符”，可以降低机制行为的细节分散架构搭建工作注意力的可能性。
    例如，让对象生存期跨用例、流程生存期或系统关闭和启动的需要定义了对象持久性的需要。 持久性是一个特别复杂的机制，在分析期间我们不希望被我们如何达到持久性的细节分散注意力。
    这促使了“持久性”分析机制的形成，该机制允许我们谈论持久对象和捕获我们对持久性机制的需求，而无需担忧持久性机制究竟会做什么以及如何工作。
</p>
<p>
    分析机制通常与问题领域无关（但并不一定总是无关），而属于“计算机科学”的概念；所以，它们通常占据架构的中层及更低层。它们为关于领域的类或子系统提供特定的行为，或与类和／或子系统之间合作的实现相对应。 它们可以作为<a class="elementLink" href="./../../../rup/guidances/termdefinitions/framework_96F80772.html" guid="_yJmE89nmEdmO6L4XMImrsA">框架（framework）</a>实现，略举几例：处理持久性的机制、进程间通信机制、错误或故障处理机制、通知机制和消息传递机制等等。 &nbsp;
</p>
<p>
    但是，由于在各个不同领域建立了更多的<a class="elementLinkWithUserText" href="./../../../rup/guidances/termdefinitions/analysis_pattern_86D515F0.html" guid="_x613Q9nmEdmO6L4XMImrsA"><b>分析模式</b></a>，它们在分析机制中的部分或完全实例化将导致这些机制出现在架构靠上的层中。
</p>
<h3>
    <a key="分析机制（analysis mechanisms）" text="示例" name="XE_analysis_mechanisms__examples_of" id="XE_analysis_mechanisms__examples_of" class="index"></a><a id="Examples of Analysis Mechanisms" name="Examples of Analysis Mechanisms">分析机制的示例</a>
</h3>
<ul>
    <li>
        <b>持久性</b><br />
        <br />
        对于它们的实例可能持久的所有类，我们需要确定： 
        <ul>
            <li>
                <b>粒度</b>：保持持久的对象大小的范围
            </li>
            <li>
                <b>容量</b>：保持持久的对象的数量
            </li>
            <li>
                <b>持续时间</b>：对象通常需要保持多久？
            </li>
            <li>
                <b>检索机制</b>：给定的对象如何唯一标识和检索？
            </li>
            <li>
                <b>更新频率</b>：对象是否或多或少是恒定的；它们永远需要更新吗？
            </li>
            <li>
                <b>可靠性</b>：对象是否应当在进程、处理器或者整个系统崩溃后继续存在？
            </li>
        </ul>
    </li>
    <li style="LIST-STYLE-TYPE: none">
        <br />
    </li>
    <li>
        <b>进程间通信</b><br />
        <br />
        对于所有需要与其他进程或线程中正在执行的组件或服务进行通信的模型元素，我们需要确定： 
        <ul>
            <li>
                <b>等待时间</b>：进程之间的通信速度必须是多快？
            </li>
            <li>
                <b>同步性</b>：异步通信
            </li>
            <li>
                <b>消息大小</b>：一个范围可能比单个数字更合适。
            </li>
            <li>
                协议、流量控制、缓存等等。
            </li>
        </ul>
    </li>
</ul>
<p>
    其他典型机制包括：
</p>
<ul>
    <li>
        消息路由
    </li>
    <li>
        进程控制和同步
    </li>
    <li>
        事务管理
    </li>
    <li>
        信息交换
    </li>
    <li>
        安全性
    </li>
    <li>
        冗余性
    </li>
    <li>
        错误报告
    </li>
    <li>
        格式转换
    </li>
</ul>
<h3>
    <a key="分析机制（analysis mechanisms）" text="描述" name="XE_analysis_mechanisms__describing" id="XE_analysis_mechanisms__describing" class="index"></a><a id="Describing Analysis Mechanisms" name="Describing Analysis Mechanisms">描述分析机制</a>
</h3>
<p>
    描述分析机制的流程为：
</p>
<ol>
    <li>
        <b>将所有分析机制收集到列表中<br />
        <br />
        </b>相同的分析机制在不同的用例实现或不同的设计人员之间可能以几个不同的名称出现。例如，<b>存储</b>、<b>持久性</b>、<b>数据库</b>和<b>存储库</b>可能都指持久性机制。或者<b>进程间通信</b>、<b>消息传递</b>或<b>远程调用</b>可能都指进程间通信机制。<br />
    </li>
    <li style="LIST-STYLE-TYPE: none">
        <br />
    </li>
    <li>
        <b>绘制从客户机类到分析机制的映射图</b>
    </li>
    <li style="LIST-STYLE-TYPE: none">
        <p align="center">
            <img height="296" alt="在内容中描述了该图。" src="./../../../rup/guidances/concepts/resources/ac_amech.gif" width="332" />
        </p>
        <p class="picturetext">
            标识的类和子系统需要映射到已标识的分析机制：箭头表示类利用了该机制。 客户机类经常需要若干种机制的服务。
        </p>
    </li>
    <li>
        <b>标识分析机制的特征</b><br />
        <br />
        为区分一系列的可能设计，请标识用来限定每个分析机制的关键特征。 这些特征也就是部件功能以及部件大小和性能。<br />
    </li>
    <li style="LIST-STYLE-TYPE: none">
        <br />
    </li>
    <li>
        <p>
            <b>通过协作建模</b>
        </p>
        <p>
            在标识和命名了分析机制之后，它们最终应通过“类集”（请参阅 [<a class="elementLinkWithUserText" href="./../../../rup/customcategories/references_56F06DFD.html#BOO98" guid="7.755968586980351E-308">BOO98</a>]）的协作进行建模，其中一些类不直接提供应用程序功能，它们的存在只是为了支持机制。
            这些“支持类”经常位于分层架构的中低层，从而向所有应用级别的类提供公共的支持服务。
        </p>
        <p>
            如果标识的机制足够普遍，那么或许会存在<a class="elementLinkWithUserText" href="./../../../rup/guidances/termdefinitions/pattern_E76690AA.html" guid="_yPtUDNnmEdmO6L4XMImrsA"><b>模式</b></a>，机制可以从中实例化 － 通过绑定现有类并根据模式的要求实现新的类。
            用这种方式制作的分析机制将是抽象的，并需要在设计和实现期间进一步改进。
        </p>
    </li>
</ol>
<p>
    分析机制记录在<a class="elementLinkWithType" href="./../../../rup/workproducts/rup_software_architecture_document_C367485C.html" guid="{6F49641A-ED10-47B5-9E5D-3F90A6BF3006}">Artifact: 软件架构文档</a>中。随着软件架构的日渐成熟，<a class="elementLinkWithType" href="./../../../rup/workproducts/rup_software_architecture_document_C367485C.html" guid="{6F49641A-ED10-47B5-9E5D-3F90A6BF3006}">Artifact: 软件架构文档</a>将包含分析机制与设计机制以及实现机制之间的关系（或映射），还有与这些选择相关联的理由。
</p><br />
<br /></td>
</tr>
</table>
</div>
<table class="copyright" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="copyright">Copyright &copy; 2008 版权所有 东软集团股份有限公司&nbsp; 联系邮箱:<a href="mailto:tcoe@neusoft.com">tcoe@neusoft.com</a></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script type="text/javascript" language="JavaScript">
				contentPage.onload();
			</script>
</html>
